文章摘要
加载中...|
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结 投诉

简介

本工具是一个基于 Bing 翻译 API 的自动化多语言翻译脚本,专为 Next.js 项目设计,能够帮助开发者快速实现国际化功能。通过简单的配置,它可以自动将中文文本翻译成多种语言,并生成对应的语言文件。

功能特点

  • 支持增量翻译:仅翻译新增或修改的文本,提高效率
  • 自动处理嵌套结构:保持 JSON 文件的层级结构不变
  • 错误处理:记录翻译失败的文本,方便后续手动处理
  • 延迟控制:可设置请求间隔,避免触发 API 限流

安装与配置

1. 安装依赖

bash
npm install bing-translate-api next-auto-translator

2. 创建语言文件目录

在项目根目录下创建语言文件目录,默认路径为 src/lang,并在该目录下创建基准语言文件(如 zh.json)。

3. 准备基准语言文件

src/lang/zh.json 中编写中文文本,支持嵌套结构:

json

json
{
  "welcome": "欢迎使用我们的应用",
  "features": {
    "title": "主要功能",
    "autoTranslate": "自动翻译",
    "multiLanguage": "多语言支持"
  }
}

4. 创建翻译脚本

创建一个 JavaScript 文件(如 translate.js),配置并运行翻译工具:

javascript

javascript
const { translate } = require("bing-translate-api");
const AutoTranslator = require("next-auto-translator");

async function translateText(text, _source, target) {
  const res = await translate(text, null, target);
  return res.translation;
}

// ====== 配置区 ======
const baseLang = "zh"; // 基准语言
const targetLangs = [
  "es",
  "en",
  "de",
  "fr",
  "pt",
  "it",
  "ja",
  "th",
  "pl",
  "ko",
  "ru",
  "da",
  "nb",
  "nl",
  "id",
  "tw",
  "tr",
]; // 目标语言
const langMap = {
  zh: "zh-Hans",
  tw: "zh-Hant",
};
const langDir = "src/lang"; // 语言包文件夹路径
// ====================

const translator = new AutoTranslator({
  translateFunction: translateText,
  translatorName: "Bing 机器翻译",
  baseLang,
  targetLangs,
  delay: 0, // 设置请求延迟(毫秒),避免触发 API 限流
  langMap,
  langDir,
});

translator.batchTranslateMultiLang();

使用方法

1. 首次运行

bash

bash
node translate.js

首次运行时,工具会创建一个锁文件(src/lang/zh.lock.json),用于跟踪文本变化,此时不会进行翻译。

2. 增量翻译

修改基准语言文件(zh.json)后,再次运行脚本:

bash

bash
node translate.js

工具会自动检测新增或修改的文本,并将其翻译成目标语言。

3. 查看结果

翻译完成后,你可以在 src/lang 目录下看到生成的各语言文件(如 en.json, ja.json 等)。

4. 处理翻译错误

如果有翻译失败的文本,工具会在 src/lang/error.json 中记录错误信息,你可以手动翻译这些文本。

配置说明

主要配置项

  • baseLang: 基准语言(源语言)
  • targetLangs: 目标语言列表
  • langMap: 语言映射表,用于解决 API 语言代码与文件名不一致的问题
  • langDir: 语言文件目录
  • delay: 请求延迟(毫秒),避免频繁请求触发 API 限流

自定义翻译函数

如果你想使用其他翻译 API(如 Google、DeepL 等),只需修改 translateText 函数即可:

javascript

javascript
async function translateText(text, source, target) {
  // 使用其他翻译 API 的代码
  const res = await otherTranslationApi.translate(text, source, target);
  return res.translation;
}

注意事项

  • 请确保你的网络可以访问 Bing 翻译 API
  • 频繁请求可能会触发 API 限流,建议适当设置 delay 参数
  • 翻译结果可能存在不准确的情况,建议在正式发布前进行人工校对
  • 锁文件(.lock.json)用于跟踪文本变化,请勿手动修改
赞赏博主
评论 隐私政策